<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/1/16 0016
 * Time: 23:19
 */

namespace App\Repositories\Admin;


use App\Models\Admin\User;

class UserRepository
{
    /*
     * @ 通过用户id查询用户信息
     * @ 返回用户相关的完整信息
     */
    public function getById($id){
        return User::where('user_id',$id)->first();
    }
    /*
     * @ 通过用户open_id查询用户信息
     * @ 返回用户相关的完整信息
     */
    public function getByOpenId($openId){
        return User::where('user_open_id',$openId)->with(['rank'=>function ($rank) {
            $rank->where('rank_type',1);
        }])->first();
    }
    /*
     * @ 通过用户type获取系统用户
     */
    public function getByType($type){
        return User::where('user_type',$type)->get();
    }
    /**
     * 通过性别查询用户
     */
    public function getBySex($sex){
        return User::where('user_sex',$sex)->get();
    }
    /**
     * 查询用户总数
     */
    public function getNumber(){
        return User::count();
    }
    /*
     * @ 通过多条件查询用户
     */
    public function getByMore($where){
        return User::whereColumn($where)->get();
    }
    /*
     * @ 查询所有用户信息
     * @ 返回用户相关的完整信息
     */
    public function getAll(){
        return User::get();
    }
    /*
     * @ 添加用户的信息
     * @ 返回的是 User模型对象
     */
    public function createUser($user){
        return User::create($user);
    }
    /**
     * 更新用户信息
     */
    public function updateUser($id,$user){
        $User = User::find($id);
        $User->update($user);
        return $User->find($id);
    }
    /**
     * 修改user_status字段的值,实现封号与解封
     */
    public function updateStatus($id,$value){
        $user = User::find($id);
        $user->user_status = $value;
        return $user->save();
    }
     /**
     * 修改user_ticket字段的值
     */
    public function updateTicket($id,$value){
        $user = User::find($id);
        $user->user_ticket = $value;
        return $user->save();
    }
    /**
     * 修改user_used_ticket字段的值
     */
    public function updateUsedTicket($id,$value){
        $user = User::find($id);
        $user->user_used_ticket = $value;
        return $user->save();
    }
    /**
     * 获取某等级的所需经验值（投票数）
     */
    public function getRankCondition($type,$rankNumber){
        $RankRepository = new RankRepository();
        $rank = $RankRepository->getByRankNumber($type,$rankNumber);
        return $rank->rank_condition;
    }
    /**
     * 修改user_rank_number字段的值
     */
    public function updateUserRankNumber($id,$value){
        $user = User::find($id);
        $user->user_rank_number = $value;
        return $user->save();
    }
    /**
     * 修改 user_uprank_ticket 字段的值
     */
    public function updateUserUprankTicketNumber($id,$value){
        $user = User::find($id);
        $user->user_uprank_ticket = $value;
        return $user->save();
    }
}
